COMPASS Properties - Overview
Introduction
CompassService and RuleManagerService are both Spring Boot - based applications and can be configured via property parameters.
Those properties can be defined in multiple ways, i.e. as Java system properties.
These parameters may be passed to CompassService / RuleManagerService in different ways: A complete overview of the possible
options can be found at the Spring website.
This document gives an overview of all relevant property parameters regarding CompassService and RuleManagerService.
This document describes in detail how properties can be passed to COMPASS (see How to pass properties) and lists all relevant configuration properties of CompassService (see Overview of properties for CompassService) and RuleManagerService (see Overview of properties for RuleManagerService).
How to pass properties
In the following chapters, different ways to configure COMPASS via properties are described.
Property Parameters as Java property files
Property parameters may be passed as property files to Spring Boot. Therefore, the command line parameter spring.config.location needs to be passed to the Java runtime containing the name of the config-file incl. its full path:
java -cp YourApp.jar org.springframework.boot.loader.WarLauncher --spring.config.location=${CATALINA_HOME}/config/YourProperties.properties
Property parameters in this overview are described as shown below and converted into a Java property as follows:
| Property Name | Java property |
|---|---|
property.name1.name2[.name…] |
property.name1.name2[.name…]=SomeContent |
| Property Name | Java property |
|---|---|
compass.parameter.fullloadsystem |
compass.parameter.fullloadsystem=true |
Click for a real world example of configuration with a property file
compass.systemname=rm62
compass.language=en
compass.country=
compass.subLocale.languages=nl;nl;de
compass.subLocale.countries=;BE;
compass.database.global.url=jdbc:mariadb://localhost:3306/rm62
compass.database.global.driver=org.mariadb.jdbc.Driver
compass.database.global.user=UW_POS
compass.database.global.password=UW_POS
compass.parameter.fullloadsystem=false
compass.parameter.loadAllCasesOnStartup=true
compass.parameter.testDate=31.12.2023
compass.parameter.fopdirectory=C:\ij_git\compass_service\configSamples\REST\script
compass.parameter.loggingarea=0
compass.security.cors.enabled=true
compass.security.cors.crossOrigin.urls=http://10.130.130.115:8085,http://localhost:4200
compass.security.clientId=rm-client
compass.security.clientSecret=rm-client-secret
compass.security.oauthServerUrl=http://localhost:8087/CompassAuthorization/oauth/check_token
compass.security.resource_id=compass-service
compass.security.tokenValidationTimeout=0
logging.level.root=INFO
logging.file.name=./log/CompassService.log
logging.level.com.cr.compass.rest=DEBUG
logging.pattern.file=%d{ISO8601} [%-5level] %logger{15}:%L - %msg%n
logging.pattern.console=%d{ISO8601} [%highlight(%-5level)] %cyan(%logger{15}:%L) - %msg%n
server.port=8086
server.servlet.contextPath=/CompassService
springdoc.swagger-ui.path=/api.html
spring.profiles.active=default,noAuthorization
spring.security.oauth2.resourceserver.jwt.issuer-uri=http://10.130.130.115:8085/realms/CaseViewer
Property Parameters as YAML files
Property parameters may be passed as YAML files to Spring Boot.
Therefore, the command line parameter spring.config.location needs to be passed to the Java runtime containing the name of the config-file incl. its full path:
java -cp YourApp.jar org.springframework.boot.loader.WarLauncher --spring.config.location=${CATALINA_HOME}/config/YourYamlFile.yaml
Property parameters in this overview are described as shown below and converted into a YAML entry as follows:
| Property Name | YAML property |
|---|---|
property.name1.name2[.name…] |
property: |
| Property Name | YAML property |
|---|---|
compass.parameter.fullloadsystem |
compass: |
Click for real-world example of configuration with a YAML file
# config COMPASS service
# GenRe 2021-07-14
server:
port: '8086'
servlet:
contextPath: "/CompassService"
compass:
systemname: rm62
language: en
country:
subLocale:
languages: nl;nl;de
countries: ;BE;
database:
global:
url: jdbc:mariadb://localhost:3306/rm62
driver: org.mariadb.jdbc.Driver
user: UW_POS
password: UW_POS
parameter:
fullloadsystem: false
testDate: 31.12.2023
fopdirectory: C:\ij_git\compass_service\configSamples\REST\script
loggingarea: 0
loadAllCasesOnStartup: true
security:
cors:
enabled: true
crossOrigin:
urls: http://10.130.130.115:8085,http://localhost:4200
clientId: rm-client
clientSecret: rm-client-secret
oauthServerUrl: http://localhost:8087/CompassAuthorization/oauth/check_token
resource_id: compass-service
tokenValidationTimeout: 0
logging:
file:
name: ./log/CompassService.log
level:
root: INFO
com:
cr:
compass:
rest: DEBUG
org:
springframework:
boot:
autoconfigure: ERROR
pattern:
file: "%d{ISO8601} [%-5level] %logger{15}:%L - %msg%n"
console: "%d{ISO8601} [%highlight(%-5level)] %cyan(%logger{15}:%L) - %msg%n"
springdoc:
swagger-ui:
path: /api.html
spring:
profiles:
active: default,noAuthorization
security:
oauth2:
resourceserver:
jwt:
issuer-uri: http://localhost:8080/realms/CaseViewer
Property Parameters as JSON files
Property parameters may be passed as JSON files to Spring Boot.
Therefore, the command line parameter spring.config.location needs to be passed to the Java runtime containing the name of the config-file incl. its full path:
java -cp YourApp.jar org.springframework.boot.loader.WarLauncher --spring.config.location=${CATALINA_HOME}/config/YourJSONFile.json
Property parameters in this overview are described as shown below and converted into a JSON entry as follows:
| Property Name | JSON property |
|---|---|
property.name1.name2[name…] |
property: { |
| Property Name | JSON property |
|---|---|
compass.parameter.fullloadsystem: { |
compass: { |
Click for real-world example of configuration with a JSON file
{
"server": {
"port": "8086",
"servlet": {
"contextPath": "/CompassService"
}
},
"compass": {
"systemname": "rm62",
"language": "en",
"country": "",
"subLocale": {
"languages": "nl;nl;de",
"countries": ";BE;"
},
"database": {
"global": {
"url": "jdbc:mariadb://localhost:3306/rm62",
"driver": "org.mariadb.jdbc.Driver",
"user": "UW_POS",
"password": "UW_POS"
}
},
"parameter": {
"fullloadsystem": false,
"testDate": "31.12.2023",
"fopdirectory": "C:\\ij_git\\compass_service\\configSamples\\REST\\script",
"loggingarea": 0,
"loadAllCasesOnStartup": true
},
"security": {
"cors": {
"enabled": true,
"crossOrigin": {
"urls": "http://10.130.130.115:8085,http://localhost:4200"
}
},
"clientId": "rm-client",
"clientSecret": "rm-client-secret",
"oauthServerUrl": "http://localhost:8087/CompassAuthorization/oauth/check_token",
"resource_id": "compass-service",
"tokenValidationTimeout": 0
}
},
"logging": {
"file": {
"name": "./log/CompassService.log"
},
"level": {
"root": "INFO",
"com": {
"cr": {
"compass": {
"rest": "DEBUG"
}
}
}
},
"pattern": {
"file": "%d{ISO8601} [%-5level] %logger{15}:%L - %msg%n",
"console": "%d{ISO8601} [%highlight(%-5level)] %cyan(%logger{15}:%L) - %msg%n"
}
},
"springdoc": {
"swagger-ui": {
"path": "/api.html"
}
},
"spring": {
"profiles": {
"active": "default,noAuthorization"
},
"security": {
"oauth2": {
"resourceserver": {
"jwt": {
"issuer-uri": "http://10.130.130.115:8085/realms/CaseViewer"
}
}
}
}
}
}
Property Parameters as a JSON string
Property parameters may be passed as Java system properties to Spring Boot.
Therefore, the command line parameter spring.application.json needs to be passed to the Java runtime followed by the JSON string (hint: the JSON string contains the same content as the JSON file in the previous chapter Property Parameters as JSON files ).
java -cp YourApp.jar org.springframework.boot.loader.WarLauncher --spring.application.json='{ \
"server": { \
"port": "8086", \
"servlet": { \
"contextPath": "/CompassService" \
} \
}, \
....
Click here to open full example
java -cp YourApp.jar org.springframework.boot.loader.WarLauncher --spring.application.json='{ \
"server": { \
"port": "8086", \
"servlet": { \
"contextPath": "/CompassService" \
} \
}, \
"compass": { \
"systemname": "rm62", \
"language": "en", \
"country": "",
"subLocale": {
"languages": "nl;nl;en",
"countries": ";BE;"
},
"database": { \
"global": { \
"url": "jdbc:mariadb://localhost:3306/rm62", \
"driver": "org.mariadb.jdbc.Driver", \
"user": "UW_POS", \
"password": "UW_POS" \
} \
}, \
"parameter": { \
"fullloadsystem": false, \
"testDate": 31.12.2023, \
"fopdirectory": "C:\\ij_git\\compass_service\\configSamples\\REST\\script", \
"loadAllCasesOnStartup": true, \
"loggingarea": 0 \
}, \
"security": { \
"cors": { \
"enabled": true, \
"crossOrigin": { \
"urls": "http://10.130.130.115:8085,http://localhost:4200" \
} \
}, \
"clientId": "rm-client", \
"clientSecret": "rm-client-secret", \
"oauthServerUrl": "http://localhost:8087/CompassAuthorization/oauth/check_token", \
"resource_id": "compass-service", \
"tokenValidationTimeout": 0 \
} \
}, \
"logging": { \
"file": { \
"name": "./log/CompassService.log" \
}, \
"level": { \
"root": "INFO", \
"com": { \
"cr": { \
"compass": { \
"rest": "DEBUG" \
} \
} \
} \
}, \
"pattern": { \
"file": "%d{ISO8601} [%-5level] %logger{15}:%L - %msg%n", \
"console": "%d{ISO8601} [%highlight(%-5level)] %cyan(%logger{15}:%L) - %msg%n" \
} \
}, \
"springdoc": { \
"swagger-ui": { \
"path": "/api.html" \
} \
}, \
"spring": { \
"profiles": { \
"active": "default,noAuthorization" \
}, \
"security": { \
"oauth2": { \
"resourceserver": { \
"jwt": { \
"issuer-uri": "http://10.130.130.115:8085/realms/CaseViewer" \
} \
} \
} \
} \
} \
}'
| The character "\" is a line continuation character on Linux. In the example above it is used for better readability. On Windows, the character "^" can be used as line continuation character instead. |
Property Parameters as Java command-line parameters
Property parameters may be passed as command line parameters to Spring Boot.
To achieve this, the parameters have to be passed to the Java runtime as a command-line parameter with a preceding "--":
java -cp YourApp.jar org.springframework.boot.loader.WarLauncher \
--compass.systemname=rm62 \
--compass.language=en \
--compass.country= \
--compass.subLocale.languages=nl;nl;en \
--compass.subLocale.countries=;BE; \
--compass.database.global.url=jdbc:mariadb://localhost:3306/rm62 \
--compass.database.global.driver=org.mariadb.jdbc.Driver \
--compass.database.global.user=UW_POS \
--compass.database.global.password=UW_POS \
--compass.parameter.fullloadsystem=false \
--compass.parameter.loadAllCasesOnStartup=true \
--compass.parameter.testDate=31.12.2023 \
--compass.parameter.fopdirectory=C:\ij_git\compass_service\configSamples\REST\script \
--compass.security.clientId=rm-client \
--compass.security.clientSecret=rm-client-secret \
--compass.security.oauthServerUrl= \
http://localhost:8087/CompassAuthorization/oauth/check_token \
--compass.security.resource_id=compass-service \
--logging.level.root=INFO \
--logging.level.com.cr.compass.rest=DEBUG \
--server.port=8086 \
--server.servlet.contextPath=/CompassService \
--springdoc.swagger-ui-path=/api.html \
--logging.pattern.file="%d{ISO8601} [%-5level] %logger{15}:%L - %msg%n" \
--logging.pattern.console="%d{ISO8601} [%highlight(%-5level)] %cyan(%logger{15}:%L) - %msg%n" \
--spring.profiles.active=default,noAuthorization
| The character "\" is a line continuation character on Linux. In the example above it is used for better readability. On Windows, the character "^" can be used as line continuation character instead. |
Overview of properties for CompassService
In CompassService properties can be configured as a property in the file CompassService.[properties | yaml | json], as JSON-string or property parameter (see How to pass properties).
The documentation about installing and configuring CompassService can be found here for 6.2 or here for 6.3.
Click for an overview of CompassService properties
| Property Name | Description | Default |
|---|---|---|
compass.server.home |
Location of COMPASS configuration files such as compass.properties. |
|
compass.parameter.fullloadsystem |
NOTE: Please note that when compass.server.home is not set, the name of the parameter is |
false |
compass.parameter.loadAllCasesOnStartup |
NOTE: Please note that when compass.server.home is not set, the name of the parameter is |
true |
compass.parameter.apiVersion |
Version of COMPASS API |
1.0 |
compass.parameter.testDate |
From version 6.3 onwards: Optional definition of a date in the format |
"today" |
knowledge.datasource.jndi |
Set value to "none", if you don’t want to use a datasource for COMPASS Knowledge data and you want to use the database configuration defined in ${compass.server.home}/config/server/compass.properties. |
|
case.datasource.jndi |
Set value to "none", if you don’t want to use a datasource for COMPASS Case data and you want to use the database configuration defined in ${compass.server.home}/config/server/compass.properties. |
|
cache.datasource.jndi |
Set value to "none", if you don’t want to use a datasource for COMPASS Cache data and you want to use the database configuration defined in ${compass.server.home}/config/server/compass.properties. |
|
compass.systemname |
Name of the COMPASS - system |
|
compass.database.global.url |
If the same database instance is to be used for Knowledge-, Case- and Cache-data, the common global JDBC URL can be set here |
|
compass.database.global.user |
If the same database instance is to be used for Knowledge-, Case- and Cache-data, the common global database user can be set here |
|
compass.database.global.password |
If the same database instance is to be used for Knowledge-, Case- and Cache-data, the common global password for the database user can be set here |
|
compass.database.global.driver |
If the same database instance is to be used for Knowledge-, Case- and Cache-data, the common global classname of the JDBC driver can be set here |
org.mariadb.jdbc.Driver |
compass.database.knowledge.url |
JDBC URL for COMPASS Knowledge data |
|
compass.database.knowledge.user |
Database user for COMPASS Knowledge data |
|
compass.database.knowledge.password |
Password for database user for COMPASS Knowledge data |
|
compass.database.knowledge.driver |
Classname of JDBC driver for COMPASS Knowledge data |
|
compass.database.knowledge.reconnect |
If set to true, COMPASS attempts to reconnect to the database in case the connection has been dropped / timed out |
true |
compass.database.knowledge.real |
Responsible for the representation of decimal numbers |
java.lang.Double |
compass.database.knowledge.viewname.Author |
The Author table is known under this name (table name, view name or synonym name) |
c40_author |
compass.database.knowledge.viewname.BoolOrInt |
The BoolOrInt table is known under this name (table name, view name or synonym name) |
c40_boolorint |
compass.database.knowledge.viewname.Double |
The Double table is known under this name (table name, view name or synonym name) |
c40_double |
compass.database.knowledge.viewname.Group |
The GroupID table is known under this name (table name, view name or synonym name) |
c40_groupid |
compass.database.knowledge.viewname.Index |
The Index table is known under this name (table name, view name or synonym name) |
c40_index |
compass.database.knowledge.viewname.Keys |
The Keys table is known under this name (table name, view name or synonym name) |
c40_keys |
compass.database.knowledge.viewname.Name |
The Name table is known under this name (table name, view name or synonym name) |
c40_name |
compass.database.knowledge.viewname.PersObj |
The PersObj table is known under this name (table name, view name or synonym name) |
c40_persobj |
compass.database.knowledge.viewname.Relation |
The Relation table is known under this name (table name, view name or synonym name) |
c40_relation |
compass.database.knowledge.viewname.Search |
The Search table is known under this name (table name, view name or synonym name) |
c40_search |
compass.database.knowledge.viewname.String |
The String table is known under this name (table name, view name or synonym name) |
c40_string |
compass.database.case.url |
JDBC URL for COMPASS Case data |
|
compass.database.case.user |
Database user for COMPASS Case data |
|
compass.database.case.password |
Password for database user for COMPASS Case data |
|
compass.database.case.driver |
Classname of JDBC driver for COMPASS Case data |
|
compass.database.case.reconnect |
If set to true, COMPASS attempts to reconnect to the database in case the connection has been dropped / timed out |
true |
compass.database.case.rightPadChar |
When true, the values of char-columns are right-padded with blanks up to the length of the
column, when COMPASS accesses these tables. This is required for certain drivers and data
base systems, e.g. Oracle. |
false |
compass.database.case.viewname.Author |
The Author table is known under this name (table name, view name or synonym name) |
c40_authorcase |
compass.database.case.viewname.CaseData |
The CaseData table is known under this name (table name, view name or synonym name) |
c40_casedata |
compass.database.case.viewname.ResultData |
The ResultData table is known under this name (table name, view name or synonym name) |
c40_resultdata |
compass.database.cache.url |
JDBC URL for COMPASS Cache data |
|
compass.database.cache.user |
Database user for COMPASS Cache data |
|
compass.database.cache.password |
Password for database user for COMPASS Cache data |
|
compass.database.cache.driver |
Classname of JDBC driver for COMPASS Cache data |
|
compass.database.cache.viewname.CacheData |
The CacheData table is known under this name (table name, view name or synonym name) |
c40_cache |
compass.database.cache.cacheType |
This entry defines a type of the cache implementation. Currently, supports only SQL. |
SQL |
compass.language |
The language locale COMPASS is running according to ISO 639-alpha-2 |
de |
compass.country |
The country locale COMPASS is running according to ISO 3166 alpha-2 |
|
compass.sublocales |
Constant "0" |
0 |
compass.subLocale.languages |
NOTE: Please note that this parameter is only used, when compass.server.home is not set. The set of sublanguage locales COMPASS is running according to ISO 639-alpha-2. The languages need to be separated by semicolons (;). |
|
compass.subLocale.countries |
NOTE: Please note that this parameter is only used, when compass.server.home is not set. The set of sublanguage country locales COMPASS is running according to ISO 3166-alpha-2. The countries need to be separated by semicolons (;) and the position needs to match the position of the defined language. |
|
compass.em.end |
Properties for Extra Mortality. Constants for the conversion from extra mortalities to loadings. Do not change default values. |
50 |
compass.em.toAge |
Properties for Extra Mortality. Constants for the conversion from extra mortalities to loadings. Do not change default values. |
50 |
compass.em.table |
Properties for Extra Mortality. Constants for the conversion from extra mortalities to loadings. Do not change default values. |
6 |
compass.em.calculationInterest |
Properties for Extra Mortality. Constants for the conversion from extra mortalities to loadings. Do not change default values. |
1.75 |
compass.parameter.turbo |
Screenbuilder providing a TURBO action for each screen, if the property TURBO is set to true. |
true |
compass.parameter.forceNavigation |
If set to true, Screenbuilder allows the navigation away from a screen (via OK-button or via direct navigation to another screen) even when the current screen is inconsistent. |
true |
compass.parameter.saveBeforeQuitting |
If set to true, Screenbuilder allows saving of a case before quitting (Cancel). If this property is missing or not set to true, Screenbuilder always quits without saving the case. |
true |
compass.parameter.trailingBlanksFix |
Some databases do not trim trailing spaces as default behaviour.
In this case, the property trailingBlanksFix has to be set to true.
This ensures, that locale-parameters are passed to the database as 4-characters filled up with spaces If set to true, the locale-parameter is always passed ‘as is’ without trailing spaces. |
false |
compass.parameter.globalConsistency |
If set to true, Screenbuilder performs a global plausibility check every time an action (an userAction) is sent to the COMPASS:
If this property is missing or set to false, the check for global consistency is only done in a few specific situation (like: SAVE, TURBO or clicking OK on the last screen). |
true |
compass.parameter.printCancelledPOSModules |
Optional parameter introduced with version 6.3. It only affects the casePrint-operation,
and only the printing of questions from a cancelled POS-dialogue. |
0 |
compass.parameter.unrelateDeletes |
If set to true ScreenBuilder does not create a DELETE-button for related/unrelated relations. Instead the UNRELATE command will delete the CaseObject, if this object has no more related questions.
If missing, or set to false, both buttons will be displayed. Also, the UNRELATE command will not delete the CaseObject. |
true |
compass.parameter.hideEditButton |
If set to true, ScreenBuilder does not create an EDIT-button for relations:
When missing, or set to false, an EDIT-button is created for relations accepting multiple elements. |
true |
compass.parameter.fopdirectory |
Directory where COMPASS is looking for the XSLT-files needed for case-print-functionality |
|
compass.security.tokenValidationTimeout |
Defines the interval (in minutes) at which a token is checked. |
0 |
server.port |
REST service is listening on this port, only relevant if the service is running as a stand-alone Spring Boot application |
|
server.servlet.contextPath |
REST API prefix, only relevant if the service is running as a stand-alone Spring Boot application |
|
server.sessionTimeout |
timeout, only relevant if the service is running as a stand-alone Spring Boot application |
|
spring.jmx.enabled |
Set to false if you don’t want to expose management beans to the JMX domain |
false |
compass.security.cors.enabled |
enables CORS (see CORS definition w3.org) |
false |
compass.security.cors.crossOrigin.urls |
specify URLs for which CORS is allowed. URLs have to be entered incl. protocol (i.e. http / https) and port. Multiple URLs can be entered as a comma-separated list |
|
compass.security.resource_id |
define the OAuth security resource id |
|
compass.security.oauthServerUrl |
define the OAuth server url which checks the token (OAuth check_token method) |
|
compass.security.clientId |
define the client id for the OAuth server |
|
compass.security.clientSecret |
define the client password for the OAuth server |
|
compass.security.tokenValidationTimeout |
define the timeout for OAuth validation token (0 = no timeout) |
|
spring.security.oauth2.resourceserver.jwt.issuer-uri |
In case you want to integrate with Keycloak, specify the URL for the specific Keycloak-realm |
|
spring.profiles.active |
Active security profile defining type of authorization - see CompassService 6.2:profiles or CompassService 6.3:profiles |
|
springdoc.swagger-ui.path |
Path to Swagger-UI (see Swagger UI) |
/api.html |
logging.level.root |
Sets the overall logging level for this REST service from which all other components will inherit the logging level as long as not specified as a new logging level. Possible values: TRACE | DEBUG | INFO | WARN | ERROR | FATAL | OFF |
|
logging.level.org.springframework.web |
Sets logging level for Spring Web. Possible values: TRACE | DEBUG | INFO | WARN | ERROR | FATAL | OFF |
|
logging.level.com.cr.compass.rest |
Sets logging level for COMPASS REST component. Possible values: TRACE | DEBUG | INFO | WARN | ERROR | FATAL | OFF |
|
logging.level.org.apache.fop |
Sets logging level for Apache FOP. Possible values: TRACE | DEBUG | INFO | WARN | ERROR | FATAL | OFF |
|
logging.level.org.springframework.web.filter.CommonsRequestLoggingFilter |
Set logging level for Spring’s CommonsRequestLoggingFilter. Possible values: TRACE | DEBUG | INFO | WARN | ERROR | FATAL | OFF |
|
logging.file.name |
Set the location of the log file. By default, logs are written to the console. |
|
logging.pattern.file |
Set the logging pattern for log files. |
0 |
logging.pattern.console |
Set the logging pattern for console output. |
CompassService Logging:
CompassService internally uses log4j2 as its logging-api for the REST services. For in-depth documentation of Log4J2, see Log4J2: Configuration with Properties.
However, CompassService also calls the COMPASS rule engine, which uses an enhanced logging allowing you to specify logging areas (see Logging the COMPASS rule engine). In CompassService, the logging area needs to be passed via REST API. When sending a request to the REST API, the logging area is defined as a parameter loggingArea.
Furthermore, the COMPASS rule engine also offers the ability to define sub-areas which add additional information to the logging output (i.e. calls to ObjectManager or database calls). For an in-depth description of the principle of logging areas and sub-areas, please refer to Logging the COMPASS rule engine.
When setting the logging area via a request, any value can be set which is smaller or equal to ALLAREAS (262143).
Request-Example:
<request>
<operation>
<assess language=”en” loggingArea=”1024”>
<caseSourceReference>
<directCaseReference>
<Case Id=…>…
</Case>
</directCaseReference>
</caseSourceReference>
<resultDestinationReference>
<databaseReference id=”Case03” subId=”TEST”>
</databaseReference>
</resultDestinationReference>
</assess>
</operation>
</request>
Overview of properties for RuleManagerService
In RuleManagerService properties can be configured as a property in the file RuleManagerService.[properties | yaml | json], as JSON-string or property parameter (see How to pass properties).
The documentation about installing and configuring RuleManagerService can be found here for 6.2 or here for 6.3.
Click for an overview of RuleManagerService properties
| Property Name | Description | Default |
|---|---|---|
rulemanager.server.home |
Location of COMPASS configuration files such as compass.properties. |
|
rulemanager.parameter.fullloadsystem |
NOTE: Please note that when rulemanager.server.home is not set, the name of the parameter is |
false |
rulemanager.parameter.apiVersion |
Version of RULEMANAGER API |
1.0 |
rulemanager.parameter.loggingarea |
Apart from the log4j-configuration (see RuleManagerService 6.2 - logging or RuleManagerService 6.3 - logging, a logging area can be specified to increase / decrease logging output (see Example defining logging-areas in RuleManagerService) |
0 |
knowledge.datasource.jndi |
Set value to "none", if you don’t want to use a datasource for COMPASS Knowledge data and you want to use the database configuration defined in ${compass.server.home}/config/server/compass.properties. |
|
rulemanager.systemname |
Name of the COMPASS - system |
|
rulemanager.database.global.url |
If the same database instance is to be used for Knowledge-data, the common global JDBC URL can be set here |
|
rulemanager.database.global.user |
If the same database instance is to be used for Knowledge-data, the common global database user can be set here |
|
rulemanager.database.global.password |
If the same database instance is to be used for Knowledge-data, the common global password for the database user can be set here |
|
rulemanager.database.global.driver |
Classname of JDBC driver for COMPASS Knowledge data |
org.mariadb.jdbc.Driver |
rulemanager.database.knowledge.url |
JDBC URL for COMPASS Knowledge data |
|
rulemanager.database.knowledge.user |
Database user for COMPASS Knowledge data |
|
rulemanager.database.knowledge.password |
Password for database user for COMPASS Knowledge data |
|
rulemanager.database.knowledge.driver |
Classname of JDBC driver for COMPASS Knowledge data |
|
rulemanager.database.knowledge.reconnect |
If set to true, COMPASS attempts to reconnect to the database in case the connection has been dropped / timed out |
true |
rulemanager.database.knowledge.real |
Responsible for the representation of decimal numbers |
java.lang.Double |
rulemanager.database.knowledge.viewname.Author |
The Author table is known under this name (table name, view name or synonym name) |
c40_author |
rulemanager.database.knowledge.viewname.BoolOrInt |
The BoolOrInt table is known under this name (table name, view name or synonym name) |
c40_boolorint |
rulemanager.database.knowledge.viewname.Double |
The Double table is known under this name (table name, view name or synonym name) |
c40_double |
rulemanager.database.knowledge.viewname.Group |
The GroupID table is known under this name (table name, view name or synonym name) |
c40_groupid |
rulemanager.database.knowledge.viewname.Index |
The Index table is known under this name (table name, view name or synonym name) |
c40_index |
rulemanager.database.knowledge.viewname.Keys |
The Keys table is known under this name (table name, view name or synonym name) |
c40_keys |
rulemanager.database.knowledge.viewname.Name |
The Name table is known under this name (table name, view name or synonym name) |
c40_name |
rulemanager.database.knowledge.viewname.PersObj |
The PersObj table is known under this name (table name, view name or synonym name) |
c40_persobj |
rulemanager.database.knowledge.viewname.Relation |
The Relation table is known under this name (table name, view name or synonym name) |
c40_relation |
rulemanager.database.knowledge.viewname.Search |
The Search table is known under this name (table name, view name or synonym name) |
c40_search |
rulemanager.database.knowledge.viewname.String |
The String table is known under this name (table name, view name or synonym name) |
c40_string |
rulemanager.language |
The language locale COMPASS is running according to ISO 639-alpha-2 |
de |
rulemanager.country |
The country locale COMPASS is running according to ISO 3166 alpha-2 |
|
rulemanager.sublocales |
Constant "0" |
0 |
rulemanager.subLocale.languages |
NOTE: Please note that this parameter is only used, when rulemanager.server.home is not set. The set of sublanguage locales COMPASS is running according to ISO 639-alpha-2. The languages need to be separated by semicolons (;). |
|
rulemanager.subLocale.countries |
NOTE: Please note that this parameter is only used, when rulemanager.server.home is not set. The set of sublanguage country locales COMPASS is running according to ISO 3166-alpha-2. The countries need to be separated by semicolons (;) and the position needs to match the position of the defined language. |
|
server.port |
REST service is listening on this port, only relevant if the service is running as a stand-alone Spring Boot application |
|
server.servlet.contextPath |
REST API prefix, only relevant if the service is running as a stand-alone Spring Boot application |
|
server.sessionTimeout |
timeout, only relevant if the service is running as a stand-alone Spring Boot application |
|
spring.jmx.enabled |
Set to false if you don’t want to expose management beans to the JMX domain |
false |
rulemanager.security.cors.enabled |
enables CORS (see CORS definition w3.org) |
false |
rulemanager.security.cors.crossOrigin.urls |
specify URLs for which CORS is allowed. URLs have to be entered incl. protocol (i.e. http / https) and port. Multiple URLs can be entered as a comma-separated list |
|
rulemanager.security.authServerUrl |
Defines the URL of the Authorization server (e.g. COMPASS Authorization Server or Keycloak). |
|
rulemanager.security.requireHttps |
If set to true, the Authorization server URL (rulemanager.security.authServerUrl) needs to be https. |
false |
rulemanager.security.sessionCheckInterval |
Sessions / tokens will be checked in the defined regular interval (in milliseconds) to verify they are still valid. |
15000 |
rulemanager.security.roleBasedResourceAccessEnabled |
If set to true, role based resource access for secured REST API calls is enabled. Only users with the role |
false |
rulemanager.security.springAuthorization.tokenBlacklistingOnLogoutEnabled |
During login with Spring Authorization Server, the frontend uses a JWT token so that users remain authorized for a certain period of time without having to log in again. This token remains valid until the expiration time even after explicit logout. When this property is set to true, the token will be blacklisted after logout so that the REST API can no longer be accessed with this token. Token blacklisting only supports the springAuthorization profile. |
true |
rulemanager.security.resource_id |
define the OAuth security resource id |
|
rulemanager.security.oauthServerUrl |
define the OAuth server url which checks the token (OAuth check_token method) |
|
rulemanager.security.clientId |
define the OAuth client id for the oauth server |
|
rulemanager.security.clientSecret |
define the OAuth client password for the oauth server |
|
rulemanager.security.tokenValidationTimeout |
define the timeout for OAuth validation token (0 = no timeout) |
|
spring.security.oauth2.resourceserver.jwt.issuer-uri |
In case you want to integrate with Keycloak, specify the URL for the specific Keycloak-realm |
|
spring.profiles.active |
Active security profile defining type of authorization - see RuleManagerService 6.2:profiles or RuleManagerService 6.3:profiles |
|
springdoc.swagger-ui.path |
Path to Swagger-UI (see Swagger UI) |
/api.html |
logging.level.root |
Set logging level from which all other logging levels of this REST service are inheriting as long as they are not overwritten. If also COMPASS rule engine is to be logged, this property needs to be set to INFO or DEBUG (see Logging the COMPASS rule engine). Possible values: TRACE | DEBUG | INFO | WARN | ERROR | FATAL | OFF |
|
logging.level.org.springframework.web |
Set logging level for Spring Web. Possible values: TRACE | DEBUG | INFO | WARN | ERROR | FATAL | OFF |
|
logging.level.com.cr.compass.rest |
Set logging level for COMPASS REST component. Possible values: TRACE | DEBUG | INFO | WARN | ERROR | FATAL | OFF |
|
logging.level.org.springframework.web.filter.CommonsRequestLoggingFilter |
Set logging level for Spring’s CommonsRequestLoggingFilter. Possible values: TRACE | DEBUG | INFO | WARN | ERROR | FATAL | OFF |
|
logging.file.name |
Set the location of the log file. By default, logs are written to the console. |
|
logging.pattern.file |
Set the logging pattern for log files. |
0 |
logging.pattern.console |
Set the logging pattern for console output. |
|
rulemanager.loggingarea |
Set the logging area for RuleManagerService. The logging area defines the logging-options for COMPASS rule engine (see Logging the COMPASS rule engine). |
|
rulemanager.login.check.enabled |
Needs to be set to TRUE to enable logging of COMPASS rule engine (see Example defining logging-areas in RuleManagerService) |
RuleManagerService Logging:
RuleManagerService internally uses log4j2 as its logging-api for the REST services. For in-depth documentation of Log4J2, see Log4J2: Configuration with Properties.
However, RuleManagerService also calls the COMPASS rule engine, which uses an enhanced logging allowing you to specify logging areas (see Logging the COMPASS rule engine). In RuleManagerService, the logging area needs to be passed as a fixed property rulemanager.loggingarea. Please keep in mind that you need to restart the service in case you change the property rulemanager.loggingarea
Furthermore, the COMPASS rule engine also offers the ability to define sub-areas which add additional information to the logging output (i.e. calls to ObjectManager or database calls). For an in-depth description of the principle of logging areas and sub-areas, please refer to Logging the COMPASS rule engine.
When setting the logging area, we recommend defining the value ALLAREAS (262143).
Logging the COMPASS rule engine
CompassService and RuleManagerService call the COMPASS rule engine. The rule engine offers the possibility to define logging areas. Logging can be restricted to certain areas, i.e. only information of a certain range is written to the log-files.
COMPASS knows logging areas and sub-areas. They are used to reduce the amount of the log-output when using Level “INFO” or less.
The area concept is an important feature of COMPASS logging: Every piece of logging information belongs to a certain area. An area is identified by a unique number (a power of 2) and/or a technical name. When only information from a specific area should be written into the log-files, the corresponding number has to be passed to COMPASS. This can either be passed in a request to CompassService. For RuleManagerService, it can be specified as a fixed property in the configuration (see How to pass properties). When information from several areas has to be logged, the sum of the corresponding areas should be passed. Information belonging to other areas will not be logged, keeping the log-files small, and the application fast.
As a precondition, the property logging.level.root=INFO needs to be set to INFO or DEBUG.
If you want to log COMPASS rule engine from within RuleManagerService, the property rulemanager.login.check.enabled must exist and be set to true (see Overview of properties for RuleManagerService).
Example passing logging-areas to CompassService
If you want to trigger logging of the COMPASS rule engine, you can use logging areas to enhance logging output. Sub-areas (see Overview of sub-areas) can be added to the logging area (see Overview of logging areas) and passed as request parameter loggingArea. Please bear in mind that ALLAREAS (262143) already includes all sub-areas.
Request-Example I: Logging-area ASSESSMENT:
<request>
<operation>
<assess language=”en” loggingArea=”1024”>
<caseSourceReference>
<directCaseReference>
<Case Id=…>…
</Case>
</directCaseReference>
</caseSourceReference>
<resultDestinationReference>
<databaseReference id=”Case03” subId=”TEST”>
</databaseReference>
</resultDestinationReference>
</assess>
</operation>
</request>
Request-Example II: Logging-area ASSESSMENT plus sub-area DATABASELAYER:
<request>
<operation>
<assess language=”en” loggingArea=”1026”>
<caseSourceReference>
<directCaseReference>
<Case Id=…>…
</Case>
</directCaseReference>
</caseSourceReference>
<resultDestinationReference>
<databaseReference id=”Case03” subId=”TEST”>
</databaseReference>
</resultDestinationReference>
</assess>
</operation>
</request>
In the example above, the logging area ASSESSMENT has the value 1024 and the sub-area DATABASELAYER has the value 2. When adding both values, the logging area for this request is 1026. This means that for this request, all log messages of the logging area ASSESSMENT will be logged plus messages of the sub-area DATABASELAYER.
The documentation about installing and configuring CompassService can be found here for 6.2 or here for 6.3.
Example defining logging-areas in RuleManagerService
If you want to log the COMPASS rule engine from within RuleManagerService, this can be achieved by specifying a logging area as a fixed property (see How to pass properties). This offers the option to specify logging-output of certain areas of the COMPASS rule engine (see Logging the COMPASS rule engine). In RuleManagerService, the logging area needs to be set as a fixed property either in the file RuleManagerService.[properties | yaml | json], as JSON-string or property parameter (see How to pass properties). When setting the logging area, any value can be set which is smaller or equal to ALLAREAS (262143). However, since most logging areas of the COMPASS rule engine apply to capturing / assessing cases, we recommend to pass ALLAREAS (262143). If you want to limit the output (i.e. no logging output of ObjectManager), you can reduce the logging output by subtracting the corresponding sub-area from ALLAREAS (262143).
Property-file example:
rulemanager.loggingarea=0
Property-Example I: Logging-area ALLAREAS:
rulemanager.loggingarea=262143
In the example above, the logging area ALLAREAS has the value 262143. All log messages of the COMPASS rule engine will be logged.
Please note that after changing the property loggingArea, RuleManagerService needs to be restarted for the change to take effect.
Property-Example II: Logging-area ALLAREAS without logging of ObjectManager:
rulemanager.loggingarea=262142
In this example above, the logging area ALLAREAS has the value 262143. However, we subtracted the sub-area OBJECTMANAGER (1) to suppress all log messages from OBJECTMANAGER.
The documentation about installing and configuring RuleManagerService can be found here for 6.2 or here for 6.3.
Overview of logging areas
The following table gives an overview of logging areas:
| Name | Value |
|---|---|
ABSTRACTION |
8 |
RISKGENERATION |
16 |
ASSESSMENT |
32 |
COMPENSATION |
64 |
CONSOLIDATION |
128 |
CASEDATA |
256 |
RESULTDATA |
512 |
USERINTERFACE |
1024 |
RESULTDISPLAY |
2048 |
CASECONTROL |
4096 |
GENERATOR |
8192 |
MAINTGUI |
16384 |
MISC |
32768 |
NETWORK |
131072 |
ALLAREAS |
262143 (includes all subareas - see below) |
Overview of sub-areas
A sub-area is used to get more detailed information, e.g. analyzing problems when accessing the database. In this case you add the value of the sub-area to the value of the logging area(s) you have chosen. A sub-area passed without a logging area will have no effect.
The following table gives an overview of the sub-areas:
| Name | Value |
|---|---|
OBJECTMANAGER |
1 |
DATABASELAYER |
2 |
CALCULATION |
4 |
SEARCH |
65536 |